<?php

namespace com\aristo\ingenieros\model;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

use com\aristo\ingenieros\view\NumberEntityView;
use com\aristo\ingenieros\view\EntityView;
use \mysqli;

/**
 * Description of VoucherQuery
 *
 * @author ARISTO INGENIEROS
 */
class VoucherQuery {

    //put your code here
    public static function getMaxNroComprobante(mysqli $con) {
        try {
            $sql = "SELECT
                        Max(c.numeracion)
                    FROM
                        documento AS d
                        INNER JOIN tipodocumento AS td ON td.idtipodocumento = d.tipodocumento_id
                        INNER JOIN orden_compra_servicio AS ocs ON ocs.documento_id = d.iddocumento
                        INNER JOIN comprobante AS c ON c.orden_compra_servicio_id = ocs.idorden_compra_servicio
                    WHERE
                        td.descripcion = 'EGRESO'";

            $query = $con->query($sql);

            if ($query) {
                if ($query->num_rows > 0) {
                    $comprobante = new NumberEntityView();
                    while ($row = $query->fetch_row()) {
                        $maxnro = utf8_decode($row[0]);

                        $comprobante->setSiguiente($maxnro);
                    }
                    return $comprobante->toJSON();
                } else {
                    return "NO EXISTE COMPROBANTES";
                }
            } else {
                return "ERROR DE RED. <br/><br/>Codigo: " . $con->errno . "<br/>" . nl2br($con->error);
            }
        } catch (Exception $exc) {
            return 'ERROR EN EL MODELO DE COMPROBANTES: ' . $exc->getMessage() . "<br/>" . nl2br($exc->getTraceAsString());
        }
    }

    public static function addComprobante($orden, $nrocomprobante, $nrocheque, $nrofactura, $fecha, $sector, $pliego, $programa, $subprograma, $proyecto, $obra, $fuente, $funcional, mysqli $con) {
        try {
            $orden = utf8_decode($orden);
            $nrocomprobante = utf8_encode($nrocomprobante);
            $nrocheque = ($nrocheque != "") ? "'".utf8_encode($nrocheque)."'" : "NULL";
            $nrofactura = utf8_encode($nrofactura);
            $fecha = utf8_encode($fecha);
            $sector = ($sector != "") ? utf8_encode($sector) : "-";
            $pliego = ($pliego != "") ? utf8_encode($pliego) : "-";
            $programa = ($programa != "") ? utf8_encode($programa) : "-";
            $subprograma = ($subprograma != "") ? utf8_encode($subprograma) : "-";
            $proyecto = ($proyecto != "") ? utf8_encode($proyecto) : "-";
            $obra = ($obra != "") ? utf8_encode($obra) : "-";
            $fuente = ($fuente != "") ? utf8_encode($fuente) : "-";
            $funcional = ($funcional != "") ? utf8_encode($funcional) : "-";

            $con->autocommit(FALSE);

            $sql = "INSERT INTO comprobante (numeracion, nrcheque, nrofactura, fecha, sector, pliego, programa, subprograma, proyecto, obra, fuertefinan, funcional, orden_compra_servicio_id) VALUES (" . $nrocomprobante . "," . $nrocheque . ",'" . $nrofactura . "','" . $fecha . "','" . $sector . "','" . $pliego . "','" . $programa . "','" . $subprograma . "','" . $proyecto . "','" . $obra . "','" . $fuente . "','" . $funcional . "'," . $orden . ")";

            $query = $con->query($sql);

            if ($query) {
                $rpta = new EntityView();
                $rpta->setResponse("SUCCESS");
                $rpta->setDescripcion("AGREGADO CORRECTAMENTE");
                return $rpta->toJSON();
            } else {
                return "ERROR DE RED.<br/><br/>Codigo: " . $con->errno . "<br/>" . nl2br($con->error)."<br/><br/>".$sql;
            }
        } catch (Exception $exc) {
            return 'ERROR EN EL MODELO DE COMPROBANTE: ' . $exc->getMessage() . "<br/>" . nl2br($exc->getTraceAsString());
        }
    }

}